home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / cmos.src < prev    next >
Text File  |  1990-10-09  |  5KB  |  171 lines

  1. %%HP:T(3)A(D)F(.);
  2. @
  3. @ HP-48SX CMOS FET EQUATIONS
  4. @ by Preston Brown
  5.  
  6. @ The following is a set of equations for CMOS field effect transistors.
  7. @ The constants included give a good approximation to common 1.6u processes.
  8. @ The models should be adjusted for your process
  9.  
  10. @ This file may be downloaded directly into your HP-48SX.
  11.  
  12. @ The equations contain process information: each equation uses its own Vt
  13. @ and K'.  In addition the effective W and the effective L are calculated.
  14. @ For example in WNEQ 1.52 is subtracted from the width and 0.4 is
  15. @ subtracted from the length. The L effective and W effective terms assume
  16. @ the L and W are entered in microns.
  17.  
  18. DIR
  19. CST
  20. {
  21. { "WN" \<< WNEQ.EQ STEQ 30 MENU \>> }
  22. { "BN" \<< BNEQ.EQ STEQ 30 MENU \>> }
  23. { "WP" \<< WPEQ.EQ STEQ 30 MENU \>> }
  24. { "BP" \<< BPEQ.EQ STEQ 30 MENU \>> }
  25. }
  26.  
  27. WNEQ.EQ
  28. {
  29.  '-(ID-(Wu-1.52)/(Lu-0.41) *
  30.  IFTE( VDS > 0 AND VGS > VTNW,
  31.  IFTE(VDS < VGS-VTNW,
  32.  WNK/2 * ( 2*(VGS-VTNW) * VDS - SQ(VDS)),
  33.  WNK/2 * SQ(VGS-VTNW))
  34.  ,0))'
  35.  { ID Wu Lu VDS VGS { "WN" \<< BNEQ.EQ STEQ 30 MENU \>>}  }
  36. }
  37.  
  38. BNEQ.EQ
  39. {
  40.  '-(ID-(Wu-1.28)/(Lu-0.69) *
  41.  IFTE( VDS > 0 AND VGS > VTNB,
  42.  IFTE(VDS < VGS-VTNB,
  43.  BNK/2 * ( 2*(VGS-VTNB) * VDS - SQ(VDS)),
  44.  BNK/2 * SQ(VGS-VTNB))
  45.  ,0))'
  46.  { ID Wu Lu VDS VGS { "BN" \<< WNEQ.EQ STEQ 30 MENU \>>}  }
  47. }
  48.  
  49. WPEQ.EQ
  50. {
  51.  '-(ID-(Wu-1.56)/(Lu-0.50) *
  52.  IFTE( VDS > 0 AND VGS > VTPW,
  53.  IFTE(VDS < VGS-VTPW,
  54.  WPK/2 * ( 2*(VGS-VTPW) * VDS - SQ(VDS)),
  55.  WPK/2 * SQ(VGS-VTPW))
  56.  ,0))'
  57.  { ID Wu Lu VDS VGS { "WP" \<< BPEQ.EQ STEQ 30 MENU \>>}  }
  58.  
  59. }
  60.  
  61. BPEQ.EQ
  62. {
  63.  '-(ID-(Wu-1.32)/(Lu-0.35) *
  64.  IFTE( VDS > 0 AND VGS > VTPB,
  65.  IFTE(VDS < VGS-VTPB,
  66.  BPK/2 * ( 2*(VGS-VTPB) * VDS - SQ(VDS)),
  67.  BPK/2 * SQ(VGS-VTPB))
  68.  ,0))'
  69.  { ID Wu Lu VDS VGS { "BP" \<< WPEQ.EQ STEQ 30 MENU \>>}  }
  70.  
  71. }
  72.  
  73. @ Some process related constants: the Vt and K' for the different devices.
  74.  
  75. VTNW            @ Vt for the worst case n-channel device
  76. 0.9
  77.  
  78. WNK             @ K' for the worst case n-channel device
  79. 40E-6
  80.  
  81. VTNB            @ Vt for the best case n-channel device
  82. 0.7
  83.  
  84. BNK             @ K' for the best case n-channel device
  85. 66E-6
  86.  
  87. VTPW            @ Vt for the worst case p-channel device
  88. 0.7
  89.  
  90. WPK             @ K' for the worst case p-channel device
  91. 12E-6
  92.  
  93. VTPB            @ Vt for the best case p-channel device
  94. 0.7
  95.  
  96. BPK             @ K' for the best case p-channel device
  97. 22E-6
  98.  
  99.  
  100. @ Using the FET models.
  101.  
  102. @ First, enter the MOS directory by pressing [VAR] {MOS}.  If you are
  103. @ already in the MOS directory that is unnecessary
  104.  
  105. @ Press [CST] to bring up the custom menu to select your model
  106.  
  107. @ Pressing {WN} for example puts you in the Solver menu with the following
  108. @ solver variables:
  109.  
  110. @ {  ID  }  {  Wu  }   {  Lu  }   { VDS  }   {  VGS  }
  111.  
  112. @ The process related variables VT and K are already stored and need
  113. @ not be worried about.  The other five variables may be stored or solved
  114. @ for.  To solve for any of these variable you must first enter the other
  115. @ four known variables and then solve for the unknown.
  116.  
  117. @ For example, to solve for Wu given the other values:
  118.  
  119. @ 1E-3 {ID}          stores 1mA as the drain current
  120. @ 1.6  {Lu}          stores 1.6 microns as the gate length
  121. @ 0.5  {VDS}         stores 0.5V into Vds; the source drain voltage
  122. @ 4.5  {VGS}         stores 4.5V into Vgs; the gate voltage
  123.  
  124. @ [SHIFT] {Wu}        solves for the width: 19.28 microns with the
  125. @             given process parameters
  126.  
  127. @ Now to solve for the best case VDS given the size you just solved for
  128. @ press:
  129.  
  130. @ {WN}          change to the best case model
  131. @ [SHIFT] {VDS}        solve for the VDS: Vds is now only 0.2V
  132.  
  133. @ You can also solve for any of the other variables.
  134.  
  135.  
  136. @ Advanced Example
  137.  
  138. @ The power of the 48SX is not just limited to storing values into the
  139. @ variables but you can also store expressions into them. For example,
  140. @ solving a transistor pulling down on
  141. @ a resistor connected from the drain of the transistor to VDD can
  142. @ be handled by storing an expression into ID.
  143. @ In this example ID is also given by: (VDD-VDS)/R
  144.  
  145. @ To calculate the value of VDS of a 20u wide by 1.6u long transistor
  146. @ with a VGS of 2V and driving a 20Kohm resistor :
  147.  
  148.  
  149. @  [CST] {WN}             select the worst case model
  150.  
  151. @ '(VDD-VDS)/R  [ENTER]  {ID}    store an expression into ID
  152. @ Press [->] [SOLVE]          (Blue 7) The 48SX then rearranges the soft keys:
  153. @                 ID is replaced by VDD and R.
  154.  
  155. @  5.0  {VDD}            store 5V into VDD (for example)
  156. @  20000  {R}            store 20K into R
  157. @  20  {Wu}            store 20 microns into Wu
  158. @  1.6  {Lu}            store 1.6 microns into Lu
  159. @  2  {VGS}            store 2V into VGS
  160. @  [shift]  {VDS}        solve for VDS
  161. @                       the 48SX returns 0.413V
  162.  
  163. @  {WN}                switch to best case
  164. @  [shift]  {VDS}        solve for VDS
  165. @                       the 48SX returns 0.145V
  166.  
  167. @ To return the soft keys to normal store 0 into ID:    0 'ID [STO]
  168. @ and press [->] [SOLVE]
  169.  
  170. @ Have fun
  171.